<?php
// 应用公共文件
function writeLog(...$args)
{
    foreach ($args as $arg) {
        $logMessage = '';
        if (is_array($arg) || is_object($arg)) {
            $logMessage = json_encode($arg, JSON_UNESCAPED_UNICODE);
        } else {
            $logMessage = $arg;
        }
        // 使用ThinkPHP内置日志记录
        \think\facade\Log::info($logMessage);
    }
}

function getHost() {
    $scheme = request()->scheme();
    $host = request()->host(true);
    $port = request()->port();
    
    $url = $scheme . '://' . $host;
    if(!in_array($port, [80, 443])) {
        $url .= ':' . $port;
    }
    return $url;
}

/**
 * 生成随机字符串
 */
function randomStr($lenth = 6) {
    return substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ'), 0, $lenth);
}

/**
 * 生成海外手机号
 */
function getPhoneNumber($len = 10) {
    // 生成随机的10位数字
    $randomNumber = str_pad(random_int(0, pow(10, 10) - 1), $len, '0', STR_PAD_LEFT);
    return $randomNumber;
}

/**
 * 获取国家前缀
 */
function getCountryCode() {
    $codes = [
        '+1', // 美国
        '+44', // 英国
        '+852', // 香港
        '+81', // 日本
        '+33', // 法国
        '+86', // 中国
        '+39', // 意大利
        '+65', // 新加坡
        '+60', // 马来西亚
    ];
    return $codes[mt_rand(0, count($codes) - 1)];
}

/**
 * 成功返回
 *
 * @param array  $data 数据
 * @param string $msg  提示
 * @param int    $code 返回码
 * 
 * @return json
 */
function success($data = [], $msg = '操作成功', $code = 200)
{
    $res['code'] = $code;
    $res['msg']  = $msg;
    $res['data'] = $data;

    return json($res);
}

/**
 * 错误返回
 * 
 * @param array  $data 数据
 * @param string $msg  提示
 * @param int    $code 返回码
 * 
 * @return json
 */
function error($data = [], $msg = '操作失败', $code = 400)
{
    $res['code'] = $code;
    $res['msg']  = $msg;
    $res['data'] = $data;

    return json($res);
}

/**
 * 错误返回（调试时用）
 *
 * @param array  $data 数据
 * @param string $msg  提示
 * @param int    $code 返回码
 * 
 * @return json
 */
function error_e($data = [], $msg = '操作失败', $code = 400)
{
    $res['code'] = $code;
    $res['msg']  = $msg;
    $res['data'] = $data;

    print_r(json_encode($res, JSON_UNESCAPED_UNICODE));

    exit;
}

/**
 * 错误返回（抛出异常）
 *
 * @param string $msg  提示
 * @param int    $code 返回码
 * 
 * @return Exception
 */
function exception($msg = '操作失败', $code = 400)
{
    throw new \think\Exception($msg, $code);
}

